package com.keba.lamp.complaint.manager.impl;

import com.keba.basic.base.manager.impl.SuperManagerImpl;
import com.keba.basic.database.mybatis.conditions.Wraps;
import com.keba.basic.database.mybatis.conditions.query.LbQueryWrap;
import com.keba.lamp.common.constant.BizConstant;
import com.keba.lamp.complaint.entity.EvidenceComponentCaseTypeRel;
import com.keba.lamp.complaint.manager.EvidenceComponentCaseTypeRelManager;
import com.keba.lamp.complaint.mapper.EvidenceComponentCaseTypeRelMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Objects;

/**
 * <p>
 * 通用业务实现类
 * 案件类型和组件库关系表（证据目录）
 * </p>
 *
 * @author chaowu.wang
 * @date 2025-03-27 22:17:56
 * @create [2025-03-27 22:17:56] [chaowu.wang] [代码生成器生成]
 */
@Slf4j
@RequiredArgsConstructor
@Service
public class EvidenceComponentCaseTypeRelManagerImpl extends SuperManagerImpl<EvidenceComponentCaseTypeRelMapper, EvidenceComponentCaseTypeRel> implements EvidenceComponentCaseTypeRelManager {

    @Override
    public EvidenceComponentCaseTypeRel getByBizTypeAndCaseType(String bizType, String caseType, Long tenantId) {
        LbQueryWrap<EvidenceComponentCaseTypeRel> queryWrap = Wraps.<EvidenceComponentCaseTypeRel>lbQ()
                .eq(EvidenceComponentCaseTypeRel::getBizType, bizType)
                .eq(EvidenceComponentCaseTypeRel::getCaseType, caseType)
                .eq(EvidenceComponentCaseTypeRel::getTenantId, tenantId);
        EvidenceComponentCaseTypeRel typeRel = this.getOne(queryWrap);
        if (Objects.isNull(typeRel)) {
            queryWrap = Wraps.<EvidenceComponentCaseTypeRel>lbQ()
                    .eq(EvidenceComponentCaseTypeRel::getBizType, bizType)
                    .eq(EvidenceComponentCaseTypeRel::getCaseType, caseType)
                    .eq(EvidenceComponentCaseTypeRel::getTenantId, BizConstant.ADMIN_TENANT_ID);
            typeRel = this.getOne(queryWrap);
        }
        return typeRel;
    }

    @Override
    public List<EvidenceComponentCaseTypeRel> listByTenantId(Long tenantId) {
        return this.baseMapper.listByTenantId(tenantId);
    }

    @Override
    public String selectMaxCode() {
        return this.baseMapper.selectMaxCode();
    }
}


